import request from "../axios";
import {requestHandle} from "../axios"
import {Toast} from 'antd-mobile';
import {R, API_PREFIX} from "@/assets/js/dict.js"


/*
* 中介费支付，请求统一下单接口
* */
export function PayApply(params) {
    return request({
        url: `${API_PREFIX}/tutor/action/payApply`,
        method: 'post',
        params
    })
}

/**
 * 查询中介费支付结果
 * @param params
 * @returns {AxiosPromise}
 * @constructor
 */
export function QueryApplyPay(params, call) {
    requestHandle(request({
        url: `${API_PREFIX}/tutor/action/queryApplyPay`,
        method: 'get',
        params
    }), call);
}


/*
* 会员费支付，请求统一下单接口
* */
export function PayVip(params) {
    return request({
        url: `${API_PREFIX}/parent/action/payVip`,
        method: 'post',
        params
    })
}

/**
 * 查询中介费支付结果
 * @param params
 * @returns {AxiosPromise}
 * @constructor
 */
export function QueryPayVip(params, callback) {
    requestHandle(request({
        url: `${API_PREFIX}/parent/action/queryPayVip`,
        method: 'get',
        params
    }), callback);
}

/**
 * 微信支付
 * 提示还需要重构，应该由后台返回完整的提示信息，前端直接展示
 * @param pretreatment 函数，数据准备，请求后台下单接口
 * @param callback 回调函数，客户端完成支付操作后，调用查询支付结果
 */
export function pay(pretreatment, callback) {
    // TODO: 重构后端返回的数据结构
    let onBridgeReady = function () {
        pretreatment().then(res => {
            if (res.code === R.success) {
                let r_p = res[R.data];
                console.log("后台返回的参数-->", r_p);

                //1 请求后端接口下单
                // eslint-disable-next-line no-undef
                WeixinJSBridge.invoke(
                    'getBrandWCPayRequest', res.responseData,
                    function (res) {
                        if (res.err_msg === "get_brand_wcpay_request:ok") {

                            //支付操作结束
                            // 使用以上方式判断前端返回,微信团队郑重提示：
                            //res.err_msg将在用户支付成功后返回ok，但并不保证它绝对可靠。
                            Toast.loading("支付结果查询中", 7, ()=>{}, true);
                            callback(r_p);
                        } else {
                            if(res.err_msg === "get_brand_wcpay_request:cancel"){
                                Toast.show("支付取消" , 3);
                            }else {
                                console.error("支付失败:" + res.err_msg);
                                Toast.offline("支付失败", 3);
                            }
                        }
                    });
            }
        }).catch((err) => {
            console.log('err ----->>>', err);
            Toast.offline("支付请求异常", 2);
        });
    };

    if (typeof WeixinJSBridge == "undefined") {
        if (document.addEventListener) {
            document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
        } else if (document.attachEvent) {
            document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
            document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
        }
    } else {
        onBridgeReady();
    }
}